Bộ nhớ đệm CPU cache

Tính chất kết hợp

_ Được xem như là một chính sách cho việc thay thế vị trí nhằm quyết định nơi nào trong bộ nhớ đệm mà bản sao một cửa vào riêng biệt của bộ nhớ chính sẽ di chuyển đến. Nếu chính sách thay thế được tự do trong việc chọn bất kì cổng vào nào trong bộ nhớ đệm để lưu trữ bản sao, lúc đó bộ nhớ đệm sẽ ở trạng thái cấu trúc "liên kết đầy đủ"- Fully Associative Cache. Ngược lại, nếu mỗi cổng vào của bộ nhớ chính chỉ có duy nhất một chỗ trong bộ nhớ đệm, bộ nhớ đệm sẽ ở trạng thái cấu trúc "ánh xạ trực tiếp"- Direct Mapped Cache.  

_Nhiều bộ nhớ đệm thực hiện một sự thỏa hiệp trong đó mỗi mục trong bộ nhớ chính có thể đi đến bất kỳ một trong số N vị trí trong bộ nhớ đệm, và được mô tả như cấu trúc "thiết lập liên kết- N chiều". Ví dụ, các dữ liệu bộ nhớ đệm cấp 1 ở Athlon của AMD là thiết lập liên kết 2 chiều, điều đó có nghĩa rằng bất kỳ vị trí cụ thể trong bộ nhớ chính có thể được lưu trữ tại một trong hai địa điểm trong dữ liệu bộ nhớ đệm cấp 1.  

_Tính chất kết hợp là một sự đánh đổi. Nếu như có mười vị trí để chính sách thế chỗ có thể ánh xạ một vị trí của bộ nhớ, sau đó phải kiểm tra xem vị trí đó đã có trong bộ nhớ đệm hay không, sau đó mười cổng vào bộ nhớ đệm phải được tìm kiếm. Việc kiểm tra nhiều vị trí sẽ hao tổn nhiều năng lượng và vùng chip hơn, cũng như có thể tốn nhiều thời gian hơn.

_Một mặt khác, bộ nhớ đệm với nhiều tính kết hợp sẽ chỉ chịu việc lệch ít hơn (xem phần Lệch do mâu thuẫn bên dưới), vậy nên CPU tốn ít thời gian để đọc từ bộ nhớ chính tốc độ thấp. Quy tắc ngón tay cái được áp dụng: gấp đôi tính kết hợp, từ cấu trúc "ánh xạ trực tiếp" cho đến cấu trúc liên kết 2 chiều, hoặc từ 2 chiều lên 4 chiều, gần như có cùng một hiệu quả về tỉ lệ trúng như việc tăng gấp đôi kích thước bộ nhớ đệm. Tăng tính kết hợp vượt hơn 4 chiều ảnh hưởng ít hơn đến tỉ lệ trúng, và chỉ được dùng cho một vài lý do khác.

_Theo thứ tự thấp hơn, từ đơn giản đến tốt hơn nhưng phức tạp:

+Cấu trúc "ánh xạ trực tiếp"- ở trường hợp tốt nhất sẽ tốt về thời gian nhưng không ổn định khi trường hợp xấu nhất.

+Cấu trúc liên kết 2 chiều.

+Cấu trúc liên kết lệch- 2 chiều.

+Cấu trúc liên kết 4 chiều.

+Cấu trúc liên kết 8 chiều: sự lựa chọn phổ biến cho những sự triển khai sau.

+Cấu trúc liên kết 12 chiều: tương tự như 8 chiều.

+Cấu trúc liên kết đầy đủ- có tỉ lệ lệch cao nhất, nhưng thực tế chỉ khi có một số nhỏ các cổng vào. 

Cấu trúc "ánh xạ trực tiếp".

_Trong cách liên kết này, mỗi địa điểm trong bộ nhớ chính có thể đi vào chỉ một cổng vào trong bộ nhớ đệm. Vì vậy, một bộ nhớ đệm có cấu trúc "ánh xạ trực tiếp còn có thể được gọi là "cấu trúc liên kết 1 chiều". Thực chất nó không có chính sách thay thế, bởi vì không có sự lựa chọn nào cho nội dung của cổng vào tại bộ nhớ đệm có thể trả về.

_Điều này có nghĩa là nếu hai địa diểm ánh xạ cùng một cổng vào, chúng dường như sẽ đẩy nhau ra. Mặc dù đơn giản, một bộ nhớ đệm ánh xạ trục tiếp vẫn cần phải lớn hơn một liên kết để cung cấp hiệu năng tương đương, và nó trở nên khó dự đoán hơn. Giả sử cho x là số thứ tự khối trong bộ nhớ đệm, y là số thứ tự khối trong bộ nhớ, và n là số lượng khối trong bộ nhớ đệm, thì việc ánh xạ sẽ được thực hiện với phương trình x= y mod n.

Cấu trúc liên kết hai chiều.

_Nếu mỗi địa điểm trong bộ nhớ chính có thể được lưu đệm tại một trong hai địa điểm trong bộ nhớ đệm, một câu hỏi được đặt ra: cái nào trong hai cái? Cách đơn giản nhất và thường dùng nhất, được miêu tả ở khung bên phải phía trên, đó là dùng những bit thấp nhất của chỉ số bộ nhớ như là một chỉ số dùng cho bộ nhớ đệm, và có hai cổng vào cho mỗi chỉ số.

_Một tiện ích từ cách hệ thống này là những thẻ được lưu trong bộ nhớ đệm không bao gồm một phần địa chỉ của bộ nhớ chính, thứ được bao hàm bởi chỉ số của bộ nhớ đệm. Bởi vì thẻ đệm chỉ có vài bit, chúng đòi hỏi ít transistor hơn, chiếm ít không gian trên các bảng mạch vi xử lý hoặc trên chip vi xử lý, và có thể được đọc cũng như so sánh nhanh hơn. Ngoài ra LRU lại đặc biệt đơn giản do chỉ cần có một bit để lưu trữ cho mỗi cặp.

Thi hành suy đoán

_Một trong những lợi thế của cấu trúc ánh xạ trực tiếp đó là nó cho phép suy đoán đơn giản và nhanh. Một khi địa chỉ đã được tính toán, chỉ số đệm có thể có bản sao của vị trí đó trong bộ nhớ được biết đến. Cổng vào đệm đó có thể được đọc, và bộ vi xử lý tiếp tục làm việc với dữ liệu đó trước khi hoàn tất kiểm tra xem thẻ có khớp với địa chỉ yêu cầu hay không.

_Ý tưởng của việc bộ vi xử lý sử dụng dữ liểu đệm trước khi thẻ khớp có thể được áp dụng cho liên kết bộ nhớ đệm. Một tập hợp con của thẻ, gọi là một dấu hiệu, có thể được dùng để chọn một trong số cổng vào khả thi ánh xạ đến địa chỉ yêu cầu. Cổng vào được chọn dựa vào dấu hiện có thể được dùng song song với việc kiểm tra toàn bộ thẻ. Kỹ thuật sử dụng thẻ hoạt động tốt nhất khi dùng trong điều kiện biên dịch địa chỉ.